#ifndef FILTER_H
#define FILTER_H

#ifdef __cplusplus
extern "C" {
#endif

// 移动平均滤波器结构体
typedef struct {
    float *buffer;      // 数据缓冲区
    int size;           // 滤波器大小
    int index;          // 当前索引
    float sum;          // 当前和
    int count;          // 当前数据点数
} MovingAverageFilter;

// 创建移动平均滤波器
MovingAverageFilter* moving_average_filter_create(int size);

// 销毁滤波器
void moving_average_filter_destroy(MovingAverageFilter* filter);

// 更新滤波器并返回滤波结果
float moving_average_filter_update(MovingAverageFilter* filter, float input);

// 重置滤波器状态
void moving_average_filter_reset(MovingAverageFilter* filter);

// 获取当前滤波器输出
float moving_average_filter_get_output(const MovingAverageFilter* filter);

#ifdef __cplusplus
}
#endif

#endif // FILTER_H